]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
app-system: Use g_hash_table_iter_remove
authorJasper St. Pierre <jstpierre@mecheye.net>
Sat, 16 Mar 2013 20:50:16 +0000 (16:50 -0400)
committerJasper St. Pierre <jstpierre@mecheye.net>
Sun, 12 May 2013 18:44:42 +0000 (14:44 -0400)
glib now provides an iteration-safe way to remove items from
the hash table, so use it instead of building a separate list.

https://bugzilla.gnome.org/show_bug.cgi?id=698486

src/shell-app-system.c

index 4d59fa313e91c413ebe9db0dadec0fbf46dc62fa..03648f9e1bb10bfeb5f3285175520b1d7fca7e71 100644 (file)
@@ -293,8 +293,6 @@ on_apps_tree_changed_cb (GMenuTree *tree,
   GHashTable *new_apps;
   GHashTableIter iter;
   gpointer key, value;
-  GSList *removed_apps = NULL;
-  GSList *removed_node;
 
   g_assert (tree == self->priv->apps_tree);
 
@@ -376,15 +374,9 @@ on_apps_tree_changed_cb (GMenuTree *tree,
       const char *id = key;
       
       if (!g_hash_table_lookup (new_apps, id))
-        removed_apps = g_slist_prepend (removed_apps, (char*)id);
+        g_hash_table_iter_remove (&iter);
     }
-  for (removed_node = removed_apps; removed_node; removed_node = removed_node->next)
-    {
-      const char *id = removed_node->data;
-      g_hash_table_remove (self->priv->id_to_app, id);
-    }
-  g_slist_free (removed_apps);
-      
+
   g_hash_table_destroy (new_apps);
 
   g_signal_emit (self, signals[INSTALLED_CHANGED], 0);